﻿using Dapper;
using OMG.Fill.Mulberry.Model.Ent;
using ProjectShare;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
namespace OMG.Fill.Mulberry.Service
{
    /// <summary>
    /// 表9套种作物收益调查情况T_MulCropIncome通用操作类
    /// </summary>
    public class MulCropIncomes
    {
        /// <summary>
        /// 添加
        /// </summary>
        public virtual ResResult<int> AddInfo(MulCropIncomeEntity model) {
            ResResult<int> obj = new ResResult<int>();
            string strSql = @"INSERT INTO dbo.T_MulCropIncome";
            strSql += "(";
            strSql += "Id,";
            strSql += "ReportId,";
            strSql += "HouseName,";
            strSql += "InterCropName,";
            strSql += "SowTime,";
            strSql += "HarvestTime,";
            strSql += "InterArea,";
            strSql += "UseSeed,";
            strSql += "SeedPrice,";
            strSql += "AddFertili,";
            strSql += "FertilizerPrice,";
            strSql += "fertilizerPerMu,";
            strSql += "FullGrowEmploy,";
            strSql += "LocalWages,";
            strSql += "HarvestYield,";
            strSql += "SalePrice,";
            strSql += "AveIncome)";
            strSql += " values(";
            strSql += "@Id,";
            strSql += "@ReportId,";
            strSql += "@HouseName,";
            strSql += "@InterCropName,";
            strSql += "@SowTime,";
            strSql += "@HarvestTime,";
            strSql += "@InterArea,";
            strSql += "@UseSeed,";
            strSql += "@SeedPrice,";
            strSql += "@AddFertili,";
            strSql += "@FertilizerPrice,";
            strSql += "@fertilizerPerMu,";
            strSql += "@FullGrowEmploy,";
            strSql += "@LocalWages,";
            strSql += "@HarvestYield,";
            strSql += "@SalePrice,";
            strSql += "@AveIncome)";
            try
            {
                using (var dbCon = ConnectFactory.GetOpenConnection())
                {
                    model.Id= CustomFun.GetGuid();
                    int result = dbCon.Execute(strSql, model);
                    if (result > 0)
                    {
                        obj.model = result;
                        obj.status = DefaultKey.SuccessResult;
                        obj.message = "添加成功！";
                    }
                    else
                    {
                        obj.model = result;
                        obj.status = DefaultKey.InfoResult;
                        obj.message = "添加失败！数量为:" + result;
                    }
                    dbCon.Dispose();//数据库连接释放
                    return obj;
                }
            }
            catch (Exception ex)
            {
                obj.status = DefaultKey.ErrorResult;
                obj.message = ex.ToString().Trim();
                LogHelper.ErrorLog("新增表9套种作物收益调查情况T_MulCropIncome对象信息失败", ex);
                return obj;
            }
        }
        /// <summary>
        /// 修改
        /// </summary>
        public virtual ResResult<int> UpdateInfo(MulCropIncomeEntity model)
        {
            ResResult<int> obj = new ResResult<int>();
            string strSql = @"UPDATE dbo.T_MulCropIncome set ";
            strSql += "ReportId = @ReportId,";
            strSql += "HouseName = @HouseName,";
            strSql += "InterCropName = @InterCropName,";
            strSql += "SowTime = @SowTime,";
            strSql += "HarvestTime = @HarvestTime,";
            strSql += "InterArea = @InterArea,";
            strSql += "UseSeed = @UseSeed,";
            strSql += "SeedPrice = @SeedPrice,";
            strSql += "AddFertili = @AddFertili,";
            strSql += "FertilizerPrice = @FertilizerPrice,";
            strSql += "fertilizerPerMu = @fertilizerPerMu,";
            strSql += "FullGrowEmploy = @FullGrowEmploy,";
            strSql += "LocalWages = @LocalWages,";
            strSql += "HarvestYield = @HarvestYield,";
            strSql += "SalePrice = @SalePrice,";
            strSql += "AveIncome = @AveIncome";
            strSql += " where Id = @Id";
            try
            {
                using (var dbCon = ConnectFactory.GetOpenConnection())
                {
                    int result = dbCon.Execute(strSql, model);
                    if (result > 0)
                    {
                        obj.model = result;
                        obj.status = DefaultKey.SuccessResult;
                        obj.message = "更新成功！";
                    }
                    else
                    {
                        obj.model = result;
                        obj.status = DefaultKey.InfoResult;
                        obj.message = "更新失败！数量为:" + result;
                    }
                    dbCon.Dispose();//数据库连接释放
                    return obj;
                }
            }
            catch (Exception ex)
            {
                obj.status = DefaultKey.ErrorResult;
                obj.message = ex.ToString().Trim();
                LogHelper.ErrorLog("更新表9套种作物收益调查情况T_MulCropIncome对象信息失败", ex);
                return obj;
            }
        }
        /// <summary>
        /// 删除
        /// </summary>
        public virtual ResResult<int> DeleteInfo(string id)
        {
            ResResult<int> obj = new ResResult<int>();
            string strSql = @"delete from dbo.T_MulCropIncome where Id = @Id";
            int result;
            try
            {
                using (var dbCon = ConnectFactory.GetOpenConnection())
                {
                    result = dbCon.Execute(strSql, new { Id = id });
                    if (result > 0)
                    {
                        obj.model = result;
                        obj.status = DefaultKey.SuccessResult;
                        obj.message = "删除成功！";
                    }
                    else
                    {
                        obj.model = result;
                        obj.status = DefaultKey.InfoResult;
                        obj.message = "删除失败！数量为:" + result;
                    }
                    dbCon.Dispose();//数据库连接释放
                    return obj;
                }
            }
            catch (Exception ex)
            {
                obj.status = DefaultKey.ErrorResult;
                obj.message = ex.ToString().Trim();
                LogHelper.ErrorLog("删除表9套种作物收益调查情况T_MulCropIncome对象信息失败", ex);
                return obj;
            }
        }
        /// <summary>
        /// 批量删除
        /// </summary>
        public virtual ResResult<int> DeleteBatch(string[] ids)
        {
            ResResult<int> obj = new ResResult<int>();
            string strIds = string.Join(",", ids.Select(x => x.ToString()).ToArray());
            string strSql = @"delete from dbo.T_MulCropIncome where Id in @ids";
            var dynamicSqlParam = new DynamicParameters();
            dynamicSqlParam.Add("ids", ids.ToArray(), null, null, null);
            int result;
            try
            {
                using (var dbCon = ConnectFactory.GetOpenConnection())
                {
                    result = dbCon.Execute(strSql, dynamicSqlParam);
                    if (result > 0)
                    {
                        obj.model = result;
                        obj.status = DefaultKey.SuccessResult;
                        obj.message = "删除成功！";
                    }
                    else
                    {
                        obj.status = DefaultKey.InfoResult;
                        obj.message = "删除失败！数量为:" + result;
                    }
                    dbCon.Dispose();//数据库连接释放
                    return obj;
                }
            }
            catch (Exception ex)
            {
                LogHelper.ErrorLog("获取数据字典表批量删除表9套种作物收益调查情况T_MulCropIncome表失败", ex);
                obj.message = ex.ToString().Trim();
                obj.status = DefaultKey.ErrorResult;
                return obj;
            }
        }
        /// <summary>
        /// 获取指定对象
        /// </summary>
        public virtual ResResult<MulCropIncomeEntity> GetModel(string id) {
            ResResult<MulCropIncomeEntity> obj = new ResResult<MulCropIncomeEntity>();
            string strSql = @"select * from dbo.T_MulCropIncome where Id = @Id";
            try
            {
                using (var dbCon = ConnectFactory.GetOpenConnection())
                {
                    obj.model = dbCon.Query<MulCropIncomeEntity>(strSql, new { Id = id }).FirstOrDefault();
                    obj.status = DefaultKey.SuccessResult;
                    obj.message = "获取成功！";
                    dbCon.Dispose();//数据库连接释放
                    return obj;
                }
            }
            catch (Exception ex)
            {
                obj.status = DefaultKey.ErrorResult;
                obj.message = ex.ToString().Trim();
                LogHelper.ErrorLog("获取表9套种作物收益调查情况T_MulCropIncome对象信息失败", ex);
                return obj;
            }
        }
        /// <summary>
        /// 获取全部列表
        /// </summary>
        /// <returns></returns>
        public virtual ResResult<List<MulCropIncomeEntity>> GetList()
        {
            ResResult<List<MulCropIncomeEntity>> obj = new ResResult<List<MulCropIncomeEntity>>();
            string strSql = @"select * from dbo.T_MulCropIncome";
            try
            {
                using (var dbCon = ConnectFactory.GetOpenConnection())
                {
                    obj.model = dbCon.Query<MulCropIncomeEntity>(strSql).ToList();
                    obj.status = DefaultKey.SuccessResult;
                    obj.message = "获取成功！";
                    dbCon.Dispose();//数据库连接释放
                    return obj;
                }
            }
            catch (Exception ex)
            {
                obj.status = DefaultKey.ErrorResult;
                obj.message = ex.ToString().Trim();
                LogHelper.ErrorLog("更新表9套种作物收益调查情况T_MulCropIncome对象信息失败", ex);
                return obj;
            }
        }
    }
}